Taqsimlangan keshga olish uchun Python-da Redis klasterini qanday amalga oshirishni bilib oling, global ilovalaringiz uchun unumdorlik va kengayuvchanlikni oshiring. Kod namunalari va eng yaxshi amaliyotlarni o'z ichiga oladi.
Python taqsimlangan keshga olish: Global ilovalar uchun Redis klasterini amalga oshirish
Bugungi tez sur'atli raqamli dunyoda ilovalardan javobgarlik, kengayuvchanlik va yuqori darajada mavjudlik kutilmoqda. Keshga olish usuli tez-tez murojaat qilinadigan ma'lumotlarni tez, xotirada ma'lumotlar omborida saqlash orqali ushbu maqsadlarga erishish uchun juda muhimdir. Redis, ommabop ochiq kodli, xotirada ma'lumotlar ombori, keshga olish, seanslarni boshqarish va real vaqt rejimida tahlil qilish uchun keng qo'llaniladi. Redis Cluster, Redisning taqsimlangan versiyasi, gorizontal kengayuvchanlikni, avtomatik nosozliklarni bartaraf etishni va yuqori mavjudlikni ta'minlab, keshga olishni keyingi bosqichga olib chiqadi, bu uni ajoyib ishlash va chidamlilikni talab qiladigan global ilovalar uchun ideal qiladi.
Taqsimlangan keshga olishga bo'lgan ehtiyojni tushunish
Ilovalar o'sib borishi va ortib borayotgan trafik miqdorini boshqarishi bilan, bitta keshga olish namunasi tiqilib qolishi mumkin. Bu, ayniqsa, global auditoriyaga xizmat ko'rsatuvchi ilovalar uchun to'g'ri keladi, bu erda ma'lumotlarga kirish naqshlari turli mintaqalar va foydalanuvchilar demografiyasi bo'yicha juda o'zgaruvchan bo'lishi mumkin. Taqsimlangan keshga olish tizimi keshga olish ish yukini bir nechta tugunlarga tarqatish orqali bu muammoni hal qiladi, bu umumiy quvvat va o'tkazish qobiliyatini samarali ravishda oshiradi. Taqsimlangan keshga olishning afzalliklariga quyidagilar kiradi:
- Kengayuvchanlik: Ko'proq trafikni klasterga ko'proq tugunlar qo'shish orqali osongina boshqaring.
- Yuqori darajada mavjudlik: Ma'lumotlar replikatsiyasi va nosozliklarni bartaraf etish mexanizmlari tufayli ba'zi tugunlar ishlamay qolsa ham, ma'lumotlarning mavjudligini ta'minlang.
- Ishlashni yaxshilash: Foydalanuvchilarga yaqinroq bo'lgan bir nechta joylardan kesh qilingan ma'lumotlarga xizmat ko'rsatish orqali kechikishni kamaytiring.
- Nosozliklarga chidamlilik: Ba'zi tugunlar mavjud bo'lmasa ham, klaster ishlashni davom ettiradi.
Redis klasterini taqdim etish
Redis Cluster - bu taqsimlangan Redis uchun mahalliy yechimdir. U ma'lumotlaringizni bir nechta Redis tugunlari bo'yicha avtomatik ravishda parchalashning yo'lini ta'minlaydi, gorizontal kengayuvchanlik va yuqori mavjudlikni taklif qiladi. Redis Cluster-ning asosiy xususiyatlariga quyidagilar kiradi:
- Ma'lumotlarni parchalash: Ma'lumotlar avtomatik ravishda xeshlash sxemasiga asoslangan holda klaster bo'ylab taqsimlanadi.
- Avtomatik nosozliklarni bartaraf etish: Agar tugun ishlamay qolsa, uning o'rniga replika avtomatik ravishda ko'tariladi, bu uzluksiz xizmatni ta'minlaydi.
- Gorizontal kengayuvchanlik: Zarur bo'lganda klaster o'lchamini o'zgartirish uchun tugunlarni osongina qo'shing yoki olib tashlang.
- Yuqori darajada mavjudlik: Ma'lumotlar ma'lumot yo'qotilishining oldini olish uchun bir nechta tugunlarda takrorlanadi.
- Yagona nosozlik nuqtasi yo'q: Klaster tugun nosozliklariga chidamli bo'lish uchun mo'ljallangan.
Redis klasterini sozlash
Redis Cluster-ni sozlash bir nechta Redis nusxalarini sozlash va ularni ulashni o'z ichiga oladi. Jarayon odatda quyidagi bosqichlardan iborat:
- Redis-ni o'rnating: Bir nechta serverlarda (yoki sinov maqsadida bitta mashinada) Redis o'rnatilganligiga ishonch hosil qiling. Uni rasmiy Redis veb-saytidan yuklab olishingiz mumkin (https://redis.io/download) yoki tizimingizning paket boshqaruvchisidan foydalanishingiz mumkin. Misol uchun, Ubuntu-da
sudo apt-get update && sudo apt-get install redis-serverdan foydalanishingiz mumkin. - Redis nusxalarini sozlang: Har bir Redis nusxasi uchun
redis.conffaylini o'zgartiring. Asosiy konfiguratsiyalargacluster-enabled yes,cluster-config-file nodes.confvacluster-node-timeout 15000o'rnatish kiradi. Shuningdek, har bir nusxa uchun noyob portni o'rnatmoqchisiz (masalan, 7000, 7001, 7002 va boshqalar). - Redis nusxalarini boshlang: Har bir Redis nusxasini sozlangan port yordamida ishga tushiring. Misol uchun,
redis-server --port 7000. - Klaster yaratish: Klaster yaratish uchun
redis-cli --cluster createbuyrug'idan foydalaning. Ushbu buyruq sizning Redis nusxalarining IP manzillari va portlarini argument sifatida oladi (masalan,redis-cli --cluster create 192.168.1.100:7000 192.168.1.101:7001 192.168.1.102:7002). Klaster yaratish jarayoni avtomatik ravishda asosiy va qul tugunlarni tayinlaydi.
Muhim eslatma: Ishlab chiqarish muhitlari uchun redis-cli kabi klaster boshqaruv vositasidan yoki qo'shimcha Redis Cluster menejeridan foydalanish, tugunlarni qo'shish/olib tashlash, monitoring va nosozliklarni bartaraf etish kabi vazifalarni avtomatlashtirish juda muhimdir. Ma'lumotlaringizni ruxsatsiz kirishdan himoya qilish uchun har doim Redis Cluster-ni kuchli parol bilan xavfsizlang. Mijozlar va klaster o'rtasidagi xavfsiz aloqa uchun TLS shifrlashni amalga oshirishni ko'rib chiqing.
Python bilan Redis Cluster-ga ulanish
Bir nechta Python kutubxonalari Redis Cluster bilan o'zaro ta'sir o'tkazishi mumkin. redis-py-cluster aynan Redis Cluster bilan o'zaro ta'sir qilish uchun mo'ljallangan mashhur tanlovdir. Uni pip yordamida o'rnatishingiz mumkin: pip install redis-py-cluster.
Redis Cluster-ga qanday ulanish va asosiy operatsiyalarni bajarishni ko'rsatadigan oddiy Python namunasi:
from rediscluster import RedisCluster
# Redis Cluster tugunlarini aniqlang
startup_nodes = [
{"host": "192.168.1.100", "port": 7000},
{"host": "192.168.1.101", "port": 7001},
{"host": "192.168.1.102", "port": 7002},
]
# RedisCluster nusxasini yarating
try:
rc = RedisCluster(startup_nodes=startup_nodes, decode_responses=True)
print("Redis Cluster-ga muvaffaqiyatli ulandi")
except Exception as e:
print(f"Redis Cluster-ga ulanishda xato: {e}")
exit(1)
# Ba'zi operatsiyalarni bajaring
rc.set("mykey", "Salom, Redis Cluster!")
value = rc.get("mykey")
print(f"mykey qiymati: {value}")
# Klaster ma'lumotlarini tekshiring
print(rc.cluster_nodes()) # Klaster tugun ma'lumotlarini ko'rsatish
Ushbu misolda, IP manzillari va portlarni Redis Cluster tugunlaringizning haqiqiy manzillari bilan almashtiring. decode_responses=True argumenti Redisdan javoblarni satrlarga dekodlash uchun ishlatiladi, bu ularni ishlashni osonlashtiradi. cluster_nodes() usuli klasterdagi joriy tugunlarni va ularning rollarini (asosiy/qul) ko'rsatadi.
Redis Cluster-da ma'lumotlarni taqsimlash va xeshlash
Redis Cluster ma'lumotlarni tugunlar bo'ylab taqsimlash uchun izchil xeshlash algoritmidan foydalanadi. Butun kalit maydoni 16 384 slotga bo'lingan. Har bir tugun ushbu slotlarning kichik to'plami uchun javobgardir. Mijoz ma'lumotlarni saqlamoqchi yoki olishni xohlaganda, kalit xesh qilinadi va natijada olingan xesh qiymati kalitga tegishli bo'lgan slotni aniqlaydi. Keyin klaster operatsiyani shu slot uchun mas'ul bo'lgan tugunga yo'naltiradi.
Ushbu avtomatlashtirilgan sharding mexanizmi mijoz tomonidagi qo'lda shardingga bo'lgan ehtiyojni yo'q qiladi. Python mijoz kutubxonasi kalitdan slotga xaritalashni boshqaradi va operatsiyalarning to'g'ri tugunga yo'naltirilishini ta'minlaydi.
Python-da Redis Cluster-ni amalga oshirish bo'yicha eng yaxshi amaliyotlar
Python ilovalarida Redis Cluster-dan samarali foydalanish uchun ushbu eng yaxshi amaliyotlarni ko'rib chiqing:
- Ulanishni birlashtirish: Redis Cluster-ga ulanishni qayta ishlatish uchun ulanishni birlashtirishdan foydalaning. Bu har bir operatsiya uchun ulanishlarni yaratish va yopishning ortiqcha yukini kamaytiradi, bu ishlashni sezilarli darajada yaxshilaydi.
redis-py-clusterkutubxonasi ulanishni avtomatik ravishda boshqaradi. - Kalit dizayni: Kalitlarni strategik tarzda loyihalashtiring. Kesh qilingan ma'lumotlaringizni osongina aniqlash va boshqarish uchun izchil kalit nomlash konventsiyalaridan foydalaning. Ishlashga salbiy ta'sir ko'rsatishi mumkin bo'lgan juda uzun kalitlardan saqlaning.
- Ma'lumotlarni seriyalashtirish: Ma'lumotlaringiz uchun mos seriyalashtirish formatini tanlang. JSON keng qo'llaniladigan formatdir, lekin ayniqsa katta ma'lumotlar to'plamlari uchun ishlashni yaxshilash va saqlash joyini kamaytirish uchun MessagePack yoki Protocol Buffers kabi yanada ixcham formatlarni ko'rib chiqing.
- Monitoring va ogohlantirish: Redis Cluster-dagi potentsial muammolarni faol ravishda aniqlash va hal qilish uchun monitoring va ogohlantirishni amalga oshiring. CPU-dan foydalanish, xotiradan foydalanish, tarmoq trafigi va kechikish kabi asosiy ko'rsatkichlarni kuzatib boring. Keng qamrovli monitoring va vizualizatsiya uchun Prometheus, Grafana va RedisInsight kabi vositalardan foydalaning. Tugun ishlamay qolishi, CPU-ning yuqori darajada ishlatilishi yoki kam xotira kabi muhim voqealar uchun ogohlantirishlarni o'rnating.
- Nosozliklarni bartaraf etishni boshqarish:
redis-py-clusterkutubxonasi nosozliklarni bartaraf etishni avtomatik ravishda boshqaradi. Biroq, tugun mavjud bo'lmay qolgan vaziyatlarni chiroyli boshqarishini ta'minlash uchun ilovangizning mantig'ini ko'rib chiqing. O'tkinchi xatolar uchun eksponensial teskari ulanish bilan qayta urinish mexanizmlarini amalga oshiring. - Ma'lumotlarni replikatsiya qilish va chidamlilik: Redis Cluster yuqori mavjudlik uchun ma'lumotlarni bir nechta tugunlarda takrorlaydi. Mavjudlik talablariga javob berish uchun konfiguratsiyangizda etarli replikalar mavjudligiga ishonch hosil qiling. Umumiy klaster ishlamay qolganda ma'lumotlarning yo'qolishidan himoya qilish uchun Redis tugunlaringizda doimiylikni (RDB yoki AOF) yoqing.
- Affinitni ko'rib chiqing: Agar siz tez-tez tegishli ma'lumotlarga murojaat qilishingiz kerak bo'lsa, tarmoq sakrashlarini kamaytirish uchun uni bir xil slotda saqlashni ko'rib chiqing. Buning uchun siz Redis Cluster-ning bir nechta kalitlarni bir xil slotga xeshlash qobiliyatidan foydalanishingiz mumkin. Biroq, bu yukning tugunlar bo'ylab teng taqsimlanishiga ta'sir qilishi mumkin.
- Ishlashni sozlash: Muayyan ish yukingiz uchun Redis konfiguratsiyangizni optimallashtiring. Ilovangiz uchun optimal konfiguratsiyani topish uchun turli xil sozlamalar (masalan, mijozlar soni, ulanish vaqti tugashi va evakuatsiya siyosatlari) bilan tajriba qiling.
- Xavfsizlik: Redis Cluster-ni kuchli parol bilan himoya qiling. Mijozlar va klaster o'rtasidagi xavfsiz aloqa uchun TLS shifrlashni amalga oshiring. Potentsial zaifliklarni bartaraf etish uchun xavfsizlik konfiguratsiyangizni muntazam ravishda ko'rib chiqing.
- Sinov va referens: Redis Cluster amalga oshirishni real muhitda sinchkovlik bilan sinab ko'ring. Turli yuk sharoitida ishlashni o'lchash va potentsial tiqilib qolgan joylarni aniqlash uchun referens vositalaridan (masalan,
redis-benchmark) foydalaning. Bu sizga optimal klaster konfiguratsiyasini aniqlashga yordam beradi.
Global ilovalarda Redis Cluster-dan foydalanish holatlari
Redis Cluster juda ko'p qirrali bo'lib, keng ko'lamli global ilova stsenariylarida qo'llanilishi mumkin:
- Kontentni keshga olish: Tez-tez murojaat qilinadigan kontentni, masalan, mahsulot kataloglari, yangiliklar maqolalari yoki ijtimoiy media oqimlari, ma'lumotlar bazasi yukini kamaytirish va butun dunyo bo'ylab foydalanuvchilar uchun javob berish vaqtini yaxshilash uchun keshga oling.
- Sessiyalarni boshqarish: Foydalanuvchi seanslarining ma'lumotlarini Redis Cluster-da saqlang, bu bir nechta serverlar va mintaqalar bo'ylab izchil foydalanuvchi tajribasini ta'minlaydi. Bu, ayniqsa, turli geografik joylar bo'ylab foydalanuvchi seanslarini saqlab turishi kerak bo'lgan ilovalar uchun muhimdir.
- Real vaqt rejimidagi tahlillar: Foydalanuvchi faoliyat jurnallari, sensor ma'lumotlari va moliyaviy tranzaktsiyalar kabi turli manbalardan real vaqt rejimida ma'lumotlarni yig'ing va tahlil qiling. Redis Cluster-ning tezligi va kengayuvchanligi uni katta hajmdagi ma'lumotlarni real vaqt rejimida qayta ishlashga mos qiladi.
- Reytinglar va reytinglar: O'yin ilovalari yoki ijtimoiy platformalar uchun real vaqt rejimida reytinglar va reyting tizimlarini yarating. Redis-ning saralangan to'plamlari ushbu turdagi ilovalarga mos keladi.
- Geografik jihatdan xabardor ilovalar: Turli geografik mintaqalarga xos bo'lgan ma'lumotlarni keshga oling va boshqaring. Misol uchun, joylashuvga asoslangan ma'lumotlarni, til afzalliklarini yoki mintaqaviy kontentni saqlang.
- Elektron tijorat platformalari: Xarid tajribasini yaxshilash va sotuvlar davomida yuqori trafikni boshqarish uchun mahsulot tafsilotlari, savat va buyurtma ma'lumotlarini keshga oling.
- O'yin ilovalari: Tez va javob beradigan o'yin tajribasi uchun o'yinchi profillari, o'yin holatlari va o'yin ichidagi statistikalarni saqlang.
Misol: Global elektron tijorat platformasi mahsulot tafsilotlarini keshga olish uchun Redis Cluster-dan foydalanadi. Yaponiya-dan kelgan foydalanuvchi mahsulot sahifasiga kirganida, ilova mahsulot ma'lumotlarini eng yaqin Redis tugunidan oladi. Bu yuqori trafik davrida ham tez yuklash vaqtini ta'minlaydi, bu butun dunyo bo'ylab mijozlar bazasi uchun foydalanuvchi tajribasini yaxshilaydi.
Kengaytirilgan mavzular va fikrlar
- Masshtabni kengaytirish: Redis Cluster-ning gorizontal masshtabga ega bo'lishining o'ziga xos qobiliyati uning eng katta kuchlaridan biridir. Biroq, masshtabni kengaytirish (ko'proq tugunlar qo'shish) samarali ma'lumotlarni taqsimlash va minimal uzilish vaqtini ta'minlash uchun ehtiyotkorlik bilan rejalashtirish va monitoringni talab qiladi.
- Ma'lumotlarni migratsiya qilish: Turli Redis klasterlari o'rtasida yoki mustaqil Redis nusxasidan klasterga ma'lumotlarni migratsiya qilish murakkab jarayon bo'lishi mumkin.
redis-cli --cluster migrateyoki ixtisoslashtirilgan ma'lumotlarni migratsiya qilish yechimlaridan foydalanishni ko'rib chiqing. - Mintaqalararo replikatsiya: Geografik jihatdan tarqalgan mintaqalar bo'ylab ma'lumotlarni replikatsiya qilishni talab qiladigan ilovalar uchun (masalan, ofatlarni tiklash uchun) faol-faol replikatsiya va mintaqalararo nosozliklarni bartaraf etish kabi xususiyatlarni taklif qiluvchi Redis Enterprise-dan foydalanishni o'rganing.
- Evakuatsiya siyosatlari: Xotiradan foydalanishni boshqarish va eng dolzarb ma'lumotlarning keshda qolishini ta'minlash uchun mos evakuatsiya siyosatlarini (masalan,
volatile-lru,allkeys-lru) sozlang. Evakuatsiya siyosatini tanlashda ilovangizning maxsus kirish naqshlarini ko'rib chiqing. - Lua skriptlash: Redis Lua skriptlashni qo'llab-quvvatlaydi, bu sizga murakkab operatsiyalarni atomli tarzda bajarishga imkon beradi. Bir nechta Redis buyruqlarini bitta, samarali operatsiyaga birlashtirish uchun Lua skriptlaridan foydalaning.
- Monitoring vositalari: Redis Cluster-ni Prometheus va Grafana kabi keng qamrovli monitoring vositalari bilan birlashtiring. Ushbu vositalar klaster ishlashi, resurslardan foydalanish va potentsial muammolar haqida qimmatli ma'lumot beradi.
- Tarmoq masalalari: Ilovangiz serverlari va Redis Cluster tugunlari o'rtasidagi tarmoq kechikishiga e'tibor bering, ayniqsa global tarqatilgan joylashtirishlarda. Kechikishni kamaytirish uchun ilovangiz serverlari va Redis Cluster tugunlarini bir xil yoki yaqin ma'lumot markazlariga joylashtirishni ko'rib chiqing.
- Klaster boshqaruv vositalari: RedisInsight (GUI asosida) va Redis Cluster-ni boshqarish, monitoring qilish va muammolarni bartaraf etishni soddalashtirish uchun boshqa CLI vositalari kabi klaster boshqaruv vositalarini o'rganing va ulardan foydalaning.
Umumiy muammolarni bartaraf etish
Redis Cluster bilan ishlashda siz ba'zi muammolarga duch kelishingiz mumkin. Quyida nosozliklarni bartaraf etish bo'yicha qo'llanma keltirilgan:
- Ulanish xatoliklari: Agar ulanish xatolariga duch kelsangiz, Redis Cluster tugunlari ishlayotganligini va ilovangiz serverlaridan kirish mumkinligini tasdiqlang. Xost nomlarini, portlarni va firewall qoidalarini qayta tekshiring. Python mijoz kutubxonasi klasterga ulanish uchun to'g'ri sozlanganligiga ishonch hosil qiling.
- Ma'lumotlar yo'qolishi: Tugun ishlamay qolsa va ma'lumotlar takrorlanmasa, ma'lumotlar yo'qolishi mumkin. Tegishli replikatsiya va doimiylik sozlamalarini (RDB yoki AOF) sozlaganingizga ishonch hosil qiling. Klasteringizni har qanday tugun nosozliklari uchun kuzatib boring va ularni zudlik bilan hal qiling.
- Ishlash tiqilishi: Agar ishlash tiqilib qolgan bo'lsa, quyidagilarni o'rganing: CPU-dan foydalanish, xotiradan foydalanish va tarmoq trafigini tekshiring. Sekin so'rovlarni aniqlang va ma'lumotlarga kirish naqshlarini optimallashtiring. Redis konfiguratsiyangizni optimallashtirish uchun ko'rib chiqing. Referens vositalaridan foydalaning. Ulanishni birlashtirishdan foydalanayotganingizga ishonch hosil qiling. Agar kerak bo'lsa, yanada kuchli apparatdan foydalanishni ko'rib chiqing.
- Slot migratsiyasi muammolari: Tugun qo'shilishi yoki olib tashlanishi paytida slotlar tugunlar o'rtasida migratsiya qilinadi. Ushbu jarayonni kuzatib boring va uning muvaffaqiyatli yakunlanishiga ishonch hosil qiling. Migratsiya paytida har qanday xatolarni kuzatib boring.
redis-cli cluster infoyoki shunga o'xshash buyruq yordamida klaster holatini tekshiring. - Autentifikatsiya muammolari: Agar siz autentifikatsiyani yoqgan bo'lsangiz, mijoz konfiguratsiyangizda to'g'ri parol mavjudligiga ishonch hosil qiling. Parolning
redis.conffaylida va ilova kodida to'g'ri ekanligini tasdiqlang. - Klaster mavjud emas: Agar klaster mavjud bo'lmasa, avval tugunning holati va ulanishini tekshiring. Keyin, xatolar uchun jurnallarga qarang. Shuningdek, konfiguratsiyalarni, ayniqsa vaqt tugashi va replikatsiya bilan bog'liq bo'lgan konfiguratsiyalarni tekshiring. Klaster kvorumining saqlanishini ta'minlang.
Misol: Global yangiliklar veb-saytini taqdim eting, u taqsimlangan kontent yetkazib berish tarmog'iga (CDN) ega. CDN kontentni foydalanuvchilarga yaqinroq keshlaydi, lekin tez-tez murojaat qilinadigan kontent markaziy keshga olinishi kerak. Redis Cluster yangiliklar maqolalari haqidagi metama'lumotlarni keshga olish uchun ishlatilishi mumkin. Foydalanuvchi maqolaga murojaat qilganda, ilova maqolaning metama'lumotlari uchun Redis Cluster-ni tekshiradi. Agar u kesh qilingan bo'lsa, ilova uni tezda oladi. Agar yo'q bo'lsa, uni ma'lumotlar bazasidan oladi va Redis Cluster-da keshga oladi. Tugun ishlamay qolgan taqdirda, tizim avtomatik ravishda replikaga o'tadi, bu esa yuqori mavjudlikni ta'minlaydi va butun dunyo bo'ylab yangilik o'quvchilari uchun uzilish vaqtini kamaytiradi.
Xulosa
Redis Cluster taqsimlangan keshga olish uchun kuchli va kengayuvchan yechimni taqdim etadi, bu yuqori unumdorlikka ega, mustahkam global ilovalarni yaratish uchun zarurdir. Python ilovalarida Redis Cluster-ni amalga oshirish orqali siz ishlashni sezilarli darajada yaxshilashingiz, ortib borayotgan trafik yukini boshqarishingiz va global foydalanuvchi bazangiz uchun umumiy foydalanuvchi tajribasini yaxshilashingiz mumkin. Optimal ishlash va ishonchlilikni ta'minlash uchun klaster sozlamalarini diqqat bilan rejalashtirishni, uning ishlashini nazorat qilishni va eng yaxshi amaliyotlarga amal qilishni unutmang. Tez, kengayuvchan va global jihatdan kirish mumkin bo'lgan ilovalarning keyingi avlodini yaratish uchun Redis Cluster bilan taqsimlangan keshga olish kuchidan foydalaning.
Ushbu maqolada keltirilgan misollar va ko'rsatmalar sizga Python bilan Redis Cluster-ni amalga oshirish uchun yaxshi boshlang'ich nuqtasini berishi kerak. Har doim eng yangi ma'lumotlar va eng yaxshi amaliyotlar uchun rasmiy Redis hujjatlariga murojaat qiling: https://redis.io/